Isumaginninnermut tunngasut


Suliffeqanngikkallarnermi aammalu ernereernermi ikiorsiissutit


SOX006_raw <- 
  statgl_url("SOX006", lang = language) |> 
  statgl_fetch(
    municipality = px_all(),
    unit         = px_all(),
    type         = px_all(),
    time         = px_top(),
    .col_code    = T
  ) |> 
  as_tibble()

SOX006 <- 
  SOX006_raw |> 
  mutate(municipality = municipality |> fct_inorder(),
         type = type |> fct_inorder()) |>
  spread(type, value) |> 
  arrange(unit) 

SOX006 |> 
  select(-c(2, 3)) |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  pack_rows(index = table(SOX006[[3]])) |> 
  pack_rows(index = table(SOX006[2])) |> 
  row_spec(c(1, 7), bold = T)
Suliffeqanngikkallarnermi ikiorsiissutit katillugit Suliffeqannginnermi suliffeqanngikkallarnermi ikiorsiissutit Angerlartitaanermi suliffeqanngikkallarnermi ikiorsiissutit Napparsimanermi suliffeqanngikkallarnermi ikiorsiissutit Ernereernermi ullormusiat
2022
Amerlassusii
Katillugit 3.056 757 396 2.197 846
Kommune Kujalleq 472 276 1 250 101
Kommuneqarfik Sermersooq 662 152 2 533 272
Qeqqata Kommunia 736 210 101 520 171
Kommune Qeqertalik 572 80 113 436 103
Avannaata Kommunia 614 39 179 458 199
Aningaasat amerlassusii (1000 DKK)
Katillugit 28.314 9.252 3.462 15.600 35.119
Kommune Kujalleq 5.329 3.168 14 2.147 4.317
Kommuneqarfik Sermersooq 7.453 3.080 18 4.355 10.739
Qeqqata Kommunia 5.355 1.783 431 3.142 7.735
Kommune Qeqertalik 5.183 930 1.409 2.844 4.222
Avannaata Kommunia 4.994 291 1.590 3.112 8.107


Se Statistikbankens tabel: SOX006

Ilaqutariit paarsisartut
SOXPV004_raw <- 
  statgl_url("SOXPV004", lang = language) %>%
  statgl_fetch(
    municipality = px_all(),
    year = px_top(1),
    .col_code = TRUE
  ) %>% 
  as_tibble()



SOXPV004_raw %>% 
  mutate(municipality = municipality %>% fct_inorder()) %>% 
  spread(year, value) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  row_spec(1, bold = TRUE)
2023
Katillugit 409
Kommuneqarfik Sermersooq 151
Avannaata Kommunia 60
Kommune Qeqertalik 51
Qeqqata Kommunia 71
Kommune Kujalleq 76


Se Statistikbankens tabel: SOXPV004

Pisortanit ikiorsiissutit
SOX004_raw <- 
  statgl_url("SOX004", lang = language) %>% 
  statgl_fetch(
    municipality = px_all(),
    unit         = px_all(),
    type         = 10,
    time         = px_top(),
    .col_code    = TRUE
  ) %>% 
  as_tibble()


SOX004 <- 
  SOX004_raw %>% 
  mutate(municipality = municipality %>% fct_inorder()) %>% 
  spread(unit, value) %>% 
  unite(combi, type, time, sep = ", ")


SOX004 %>% 
  select(-combi) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = SOX004[["combi"]] %>% table()) %>% 
  row_spec(1, bold = TRUE)
Amerlassusii Aningaasat amerlassusii (1000 DKK)
Pisortanit ikiorsiissutit katillugit, 2022
Katillugit 3.323 53.040
Kommune Kujalleq 721 11.531
Kommuneqarfik Sermersooq 1.045 19.953
Qeqqata Kommunia 609 10.504
Kommune Qeqertalik 462 5.857
Avannaata Kommunia 486 5.196


Se Statistikbankens tabel: SOX004

Soraarnerussutisiallit
SOXPEN1_raw <- 
  statgl_url("SOXPEN1", lang = language) %>% 
  statgl_fetch(
    gender    = px_all(),
    payment   = px_all(),
    time      = px_top(),
    .col_code = TRUE
  ) %>% 
  as_tibble()


SOXPEN1 <- 
  SOXPEN1_raw %>% 
  mutate(
    gender = gender %>% fct_inorder(),
    payment = payment %>% fct_inorder()
  ) %>% 
  spread(gender, value)

SOXPEN1 %>% 
  select(-time) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = SOXPEN1[["time"]] %>% table()) %>% 
  row_spec(1, bold = TRUE)
Katillugit Angutit Arnat
2022
Katillugit 6.322 3.278 3.044
Utoqqalinermi soraarnerussutisiat 3.859 1.994 1.865
Siusinaarluni soraarnerussutisiat 2.463 1.284 1.179


Se Statistikbankens tabel: SOXPEN1

Isumaginninnikkut inissiisarfiit


SOXFO10_raw <- 
  statgl_url("SOXFO10", lang = language) %>%
  statgl_fetch(
    "age group" = px_all(),
    gender      = px_all(),
    time        = px_top(1),
    .col_code   = TRUE
  ) %>% 
  as_tibble()



SOXFO10 <- 
  SOXFO10_raw %>% 
  filter(time == max(time)) %>% 
  mutate(
    `age group` = `age group` %>% fct_inorder(),
    gender = gender %>% fct_inorder()
  ) %>% 
  spread(gender, value)


SOXFO10 %>% 
  select(-time) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = SOXFO10[["time"]] %>% table()) %>% 
  row_spec(1, bold = TRUE)
Katillugit Angut Arnaq
2018
Katillugit 1.131 706 425
0-17 -inik ukiullit 199 138 61
18-30 -nik ukiullit 292 189 103
31-40 -nik ukiullit 175 107 68
41-50 -inik ukiullit 143 86 57
51-60 -inik ukiullit 238 137 101
61+ -inik ukiullit 84 49 35


Se Statistikbankens tabel: SOXFO10

Tapiliussatut ikiorsiissutit
SOXBS02_raw <- 
  statgl_url("SOXBS02", lang = language) |> 
  statgl_fetch(
    district  = px_all(),
    unit      = "Antal",
    time      = px_top(7),
    .col_code = T
  ) |> 
  as_tibble()

SOXBS02 <- 
  SOXBS02_raw |> 
  spread(time, value)

SOXBS02 |> 
  select(-unit) |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  pack_rows(index = table(SOXBS02["unit"])) |> 
  row_spec(1, bold = T)
2016 2017 2018 2019 2020 2021 2022
Amerlassusaat
Ilulissat 447 419 374 361 359 317 291
Ittoqotoormiit 25 23 23 32 22 19 25
Kangaatsiaq 45 48 37 35 28 35 32
Maniitsoq 302 291 316 302 293 283 279
Nanortalik 185 151 144 135 105 111 115
Narsaq 215 198 179 172 172 154 162
Nuna tamakkerlugu 4.421 4.115 3.941 3.822 3.729 3.653 3.527
Nuuk 1.134 1.068 1.015 1.015 1.023 1.000 980
Paamiut 231 191 193 186 183 176 158
Qaqortoq 393 356 306 302 279 281 309
Qasigiannguit 149 140 126 112 106 108 93
Qeqertarsuaq 74 75 72 62 60 68 62
Qaanaaq 64 49 54 51 47 43 43
Sisimiut 545 522 533 499 509 510 495
Tasiilaq 168 153 153 153 142 144 135
Upernavik 43 39 45 38 26 36 29
Uummannaq 91 75 73 71 69 68 52
Aasiaat 310 317 298 296 306 300 267


Se Statistikbankens tabel: SOXBS02

Aningaasaatikilliortut


SODOU01_raw <- 
  statgl_url("SOXOU01", lang = language) %>% 
  statgl_fetch(
    "inventory variable" = c("Andel50", "Andel60"),
    gender = px_all(),
    year = px_top(1),
    .col_code = TRUE
  ) %>% 
  as_tibble()


SODOU01 <- 
  SODOU01_raw %>% 
  mutate(`inventory variable` = `inventory variable` %>% fct_inorder()) %>% 
  arrange(desc(gender)) %>% 
  mutate(gender = gender %>% fct_inorder() %>% fct_rev()) %>% 
  spread(gender, value)
  

SODOU01 %>% 
  select(-year) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = SODOU01[["year"]] %>% table())
Angutit Arnat Katillugit
2022
50%-imik ataatsisut agguaqatigiissinnerini amerlassusaat 5,0 4,3 4,7
60%-imik ataatsisut agguaqatigiissinnerini amerlassusaat 9,2 8,4 8,8


Se Statistikbankens tabel: SOXOU01


Sidst opdateret: 17. april 2024
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWVjaG8gICAgPSBUUlVFLA0KCW1lc3NhZ2UgPSBGQUxTRSwNCgl3YXJuaW5nID0gRkFMU0UsDQoJY2xhc3Mub3V0cHV0ID0gInNjcm9sbC0xMDAiDQopDQoNCmxpYnJhcnkoInRpZHl2ZXJzZSIpDQpsaWJyYXJ5KCJzdGF0Z2wiKQ0KbGlicmFyeSgia2FibGVFeHRyYSIpDQpsaWJyYXJ5KCJsdWJyaWRhdGUiKQ0KbGlicmFyeSgieWFtbCIpDQoNCmxhbmd1YWdlICA8LSBwYXJhbXMkbGFuZw0Kb3B0aW9uICAgIDwtIHBhc3RlMCgiP2xhbmc9IiwgbGFuZ3VhZ2UsICImc2VsZWN0IikNCmxvZ28gICAgICA8LSBwYXN0ZTAoZ2V0d2QoKSwiL2FkZC9sb2dvLmdpZiIpDQp0eHQgICAgICAgPC0gcmVhZF95YW1sKHBhc3RlMChnZXR3ZCgpLCAiL2FkZC90eHQueW1sIiksIGZpbGVFbmNvZGluZyA9ICJJU08tODg1OS0xIikNCnNvdXJjZSAgICA8LSB0eHQkc291cmNlW2xhbmd1YWdlXSAlPiUgdW5saXN0KCkNCg0KeGFyaW5nYW5FeHRyYTo6dXNlX2NsaXBib2FyZCgpDQoNCmBgYA0KDQpgYGB7Y3NzLCBlY2hvID0gRkFMU0V9DQoNCi5hY2NvcmRpb24gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTE5OTAwOw0KICBjb2xvcjogd2hpdGU7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgcGFkZGluZzogMThweDsNCiAgd2lkdGg6IDEwMCU7DQogIGJvcmRlcjogbm9uZTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICB0ZXh0LWFsaWduOiBsZWZ0Ow0KICBvdXRsaW5lOiBub25lOw0KICBmb250LXNpemU6IDE1cHg7DQogIHRyYW5zaXRpb246IDAuNHM7DQp9DQoNCi5hY3RpdmUsIC5hY2NvcmRpb246aG92ZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjk3MjQyOw0KfQ0KDQouYWNjb3JkaW9uOmFmdGVyIHsNCiAgY29udGVudDogJ1wwMDJCJzsNCiAgY29sb3I6ICM3Nzc7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBmbG9hdDogcmlnaHQ7DQogIG1hcmdpbi1sZWZ0OiA1cHg7DQp9DQoNCi5hY3RpdmU6YWZ0ZXIgew0KICBjb250ZW50OiAiXDIyMTIiOw0KfQ0KDQoucGFuZWwgew0KICBwYWRkaW5nOiAwcHggNXB4IDBweCA1cHg7DQogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOw0KICBtYXgtaGVpZ2h0OiAwOw0KICBvdmVyZmxvdzogYXV0bzsNCiAgb3ZlcmZsb3cteTogaGlkZGVuOw0KICBvdmVyZmxvdy14OiBhdXRvOw0KICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuMnMgZWFzZS1vdXQ7DQp9DQoNCmRldGFpbHMgew0KICB3aWR0aDogMTAwJTsNCn0NCg0KZGV0YWlscyA+IHN1bW1hcnkgew0KICBwYWRkaW5nOiA0cHggMTJweDsNCiAgd2lkdGg6IDEwMCU7DQogIGJhY2tncm91bmQtY29sb3I6ICMwMDdmOTk7DQogIGJvcmRlcjogc29saWQ7DQogIGJvcmRlci1jb2xvcjogd2hpdGU7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBmb250LXNpemU6IDE1cHg7DQogIGNvbG9yOiB3aGl0ZTsNCn0NCg0KZGV0YWlsc1tvcGVuXSA+IHN1bW1hcnkgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFhNDFhOw0KfQ0KDQoNCi50aXRsZSB7DQogIGNvbG9yOiAjMWI1NDYzOw0KICBmb250LXNpemU6IDM2cHg7DQp9DQoNCg0KLnBlcnNvbmVyIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICMwMDQ0NTk7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDAuMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLsO4a29ub21pIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICMwMDdGOTk7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDFweDsNCiAgcGFkZGluZy1ib3R0b206IDAuMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLnR2w6ZyZ8OlZW5kZSB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjZmFhNDFhOw0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAwLjFweDsNCiAgcGFkZGluZy1ib3R0b206IDFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi5jb250YWluZXIgew0KICB3aWR0aDogaW5oZXJpdDsNCn0NCg0KLnNjcm9sbC0xMDAgew0KICBtYXgtaGVpZ2h0OiAxMDA7DQogIG92ZXJmbG93LXk6IGF1dG87DQogIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7DQp9DQoNCg0KcHJlIHsNCiAgbWF4LWhlaWdodDogMzAwcHg7DQogIG92ZXJmbG93LXk6IGF1dG87DQp9DQoNCnByZVtjbGFzc10gew0KICBtYXgtaGVpZ2h0OiAzMDBweDsNCn0NCg0KYGBgDQoNCjxicj4NCjxicj4NCg0KPGNlbnRlcj4NCg0KLS0tDQogDQojIFtgciB0eHQkU08kdGl0bGVbbGFuZ3VhZ2VdYF17LnRpdGxlfQ0KIA0KLS0tDQo8L2NlbnRlcj4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkU08kc3ViMVtsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAxOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlNPWDAwNiIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIFNPWDAwNn0NCg0KU09YMDA2X3JhdyA8LSANCiAgc3RhdGdsX3VybCgiU09YMDA2IiwgbGFuZyA9IGxhbmd1YWdlKSB8PiANCiAgc3RhdGdsX2ZldGNoKA0KICAgIG11bmljaXBhbGl0eSA9IHB4X2FsbCgpLA0KICAgIHVuaXQgICAgICAgICA9IHB4X2FsbCgpLA0KICAgIHR5cGUgICAgICAgICA9IHB4X2FsbCgpLA0KICAgIHRpbWUgICAgICAgICA9IHB4X3RvcCgpLA0KICAgIC5jb2xfY29kZSAgICA9IFQNCiAgKSB8PiANCiAgYXNfdGliYmxlKCkNCg0KU09YMDA2IDwtIA0KICBTT1gwMDZfcmF3IHw+IA0KICBtdXRhdGUobXVuaWNpcGFsaXR5ID0gbXVuaWNpcGFsaXR5IHw+IGZjdF9pbm9yZGVyKCksDQogICAgICAgICB0eXBlID0gdHlwZSB8PiBmY3RfaW5vcmRlcigpKSB8Pg0KICBzcHJlYWQodHlwZSwgdmFsdWUpIHw+IA0KICBhcnJhbmdlKHVuaXQpIA0KDQpTT1gwMDYgfD4gDQogIHNlbGVjdCgtYygyLCAzKSkgfD4gDQogIHJlbmFtZSgiICIgPSAxKSB8PiANCiAgc3RhdGdsX3RhYmxlKCkgfD4gDQogIHBhY2tfcm93cyhpbmRleCA9IHRhYmxlKFNPWDAwNltbM11dKSkgfD4gDQogIHBhY2tfcm93cyhpbmRleCA9IHRhYmxlKFNPWDAwNlsyXSkpIHw+IA0KICByb3dfc3BlYyhjKDEsIDcpLCBib2xkID0gVCkNCg0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfSBgciBwYXN0ZShzb3VyY2UsICJTT1gwMDYiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxL2IxNmQ2ZGIzLTlmYWItNGRiMi1hMjIyLTA2OTZmYWY4Mzg5NCIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4NCjwvZGV0YWlscz4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkU08kc3ViMltsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMjogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJTT1hQVjAwNCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIFNPWFBWMDA0fQ0KDQpTT1hQVjAwNF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlNPWFBWMDA0IiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUNCiAgc3RhdGdsX2ZldGNoKA0KICAgIG11bmljaXBhbGl0eSA9IHB4X2FsbCgpLA0KICAgIHllYXIgPSBweF90b3AoMSksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KDQoNClNPWFBWMDA0X3JhdyAlPiUgDQogIG11dGF0ZShtdW5pY2lwYWxpdHkgPSBtdW5pY2lwYWxpdHkgJT4lIGZjdF9pbm9yZGVyKCkpICU+JSANCiAgc3ByZWFkKHllYXIsIHZhbHVlKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFRSVUUpDQoNCg0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIlNPWFBWMDA0IilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS8zNWZmMjk4My1lOTI5LTRjYWMtOWE0NS1jZTdhZmQ0NzJjMWYiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KPC9kZXRhaWxzPg0KDQo8ZGV0YWlscz4gPHN1bW1hcnk+IGByIHR4dCRTTyRzdWIzW2xhbmd1YWdlXWAgPC9zdW1tYXJ5PiANCjxicj4NCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAzOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlNPWDAwNCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIFNPWDAwNH0NCg0KU09YMDA0X3JhdyA8LSANCiAgc3RhdGdsX3VybCgiU09YMDA0IiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICBtdW5pY2lwYWxpdHkgPSBweF9hbGwoKSwNCiAgICB1bml0ICAgICAgICAgPSBweF9hbGwoKSwNCiAgICB0eXBlICAgICAgICAgPSAxMCwNCiAgICB0aW1lICAgICAgICAgPSBweF90b3AoKSwNCiAgICAuY29sX2NvZGUgICAgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KDQoNClNPWDAwNCA8LSANCiAgU09YMDA0X3JhdyAlPiUgDQogIG11dGF0ZShtdW5pY2lwYWxpdHkgPSBtdW5pY2lwYWxpdHkgJT4lIGZjdF9pbm9yZGVyKCkpICU+JSANCiAgc3ByZWFkKHVuaXQsIHZhbHVlKSAlPiUgDQogIHVuaXRlKGNvbWJpLCB0eXBlLCB0aW1lLCBzZXAgPSAiLCAiKQ0KDQoNClNPWDAwNCAlPiUgDQogIHNlbGVjdCgtY29tYmkpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKCkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBTT1gwMDRbWyJjb21iaSJdXSAlPiUgdGFibGUoKSkgJT4lIA0KICByb3dfc3BlYygxLCBib2xkID0gVFJVRSkNCg0KDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiU09YMDA0IilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS8xNmRjYTg4Ni0zMjY1LTRkNGYtYjUzOS03NzBmZjE5MTM1N2YiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KPC9kZXRhaWxzPg0KDQoNCjxkZXRhaWxzPiA8c3VtbWFyeT4gYHIgdHh0JFNPJHN1YjRbbGFuZ3VhZ2VdYCA8L3N1bW1hcnk+IA0KPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDQ6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiU09YUEVOMSIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIEFMWEFMSzR9DQoNClNPWFBFTjFfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJTT1hQRU4xIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICBnZW5kZXIgICAgPSBweF9hbGwoKSwNCiAgICBwYXltZW50ICAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgPSBweF90b3AoKSwNCiAgICAuY29sX2NvZGUgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KDQoNClNPWFBFTjEgPC0gDQogIFNPWFBFTjFfcmF3ICU+JSANCiAgbXV0YXRlKA0KICAgIGdlbmRlciA9IGdlbmRlciAlPiUgZmN0X2lub3JkZXIoKSwNCiAgICBwYXltZW50ID0gcGF5bWVudCAlPiUgZmN0X2lub3JkZXIoKQ0KICApICU+JSANCiAgc3ByZWFkKGdlbmRlciwgdmFsdWUpDQoNClNPWFBFTjEgJT4lIA0KICBzZWxlY3QoLXRpbWUpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKCkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBTT1hQRU4xW1sidGltZSJdXSAlPiUgdGFibGUoKSkgJT4lIA0KICByb3dfc3BlYygxLCBib2xkID0gVFJVRSkNCg0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIlNPWFBFTjEiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzBmYTk0YWNlLTk2OWQtNDI5YS04Yjg3LWNhOWNkMmI1ZGFiNyIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQoNCjwvZGV0YWlscz4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkU08kc3ViNVtsYW5ndWFnZV1gIDwvc3VtbWFyeT4NCjxicj4NCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDU6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiU09YRk8xMCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIFNPWEZPMTB9DQoNClNPWEZPMTBfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJTT1hGTzEwIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUNCiAgc3RhdGdsX2ZldGNoKA0KICAgICJhZ2UgZ3JvdXAiID0gcHhfYWxsKCksDQogICAgZ2VuZGVyICAgICAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgICA9IHB4X3RvcCgxKSwNCiAgICAuY29sX2NvZGUgICA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCg0KDQpTT1hGTzEwIDwtIA0KICBTT1hGTzEwX3JhdyAlPiUgDQogIGZpbHRlcih0aW1lID09IG1heCh0aW1lKSkgJT4lIA0KICBtdXRhdGUoDQogICAgYGFnZSBncm91cGAgPSBgYWdlIGdyb3VwYCAlPiUgZmN0X2lub3JkZXIoKSwNCiAgICBnZW5kZXIgPSBnZW5kZXIgJT4lIGZjdF9pbm9yZGVyKCkNCiAgKSAlPiUgDQogIHNwcmVhZChnZW5kZXIsIHZhbHVlKQ0KDQoNClNPWEZPMTAgJT4lIA0KICBzZWxlY3QoLXRpbWUpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKCkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBTT1hGTzEwW1sidGltZSJdXSAlPiUgdGFibGUoKSkgJT4lIA0KICByb3dfc3BlYygxLCBib2xkID0gVFJVRSkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJTT1hGTzEwIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS9lZTFhZGYzMS00NTdjLTQ5YTctOGJjNy01NGEwZTBhOWZjOTAiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KDQo8L2RldGFpbHM+DQoNCjxkZXRhaWxzPiA8c3VtbWFyeT4gYHIgdHh0JFNPJHN1YjZbbGFuZ3VhZ2VdYCA8L3N1bW1hcnk+DQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgNjogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJTT1hCUzAyIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCmBgYHtyIFNPWEJTMDJ9DQoNClNPWEJTMDJfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJTT1hCUzAyIiwgbGFuZyA9IGxhbmd1YWdlKSB8PiANCiAgc3RhdGdsX2ZldGNoKA0KICAgIGRpc3RyaWN0ICA9IHB4X2FsbCgpLA0KICAgIHVuaXQgICAgICA9ICJBbnRhbCIsDQogICAgdGltZSAgICAgID0gcHhfdG9wKDcpLA0KICAgIC5jb2xfY29kZSA9IFQNCiAgKSB8PiANCiAgYXNfdGliYmxlKCkNCg0KU09YQlMwMiA8LSANCiAgU09YQlMwMl9yYXcgfD4gDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkNCg0KU09YQlMwMiB8PiANCiAgc2VsZWN0KC11bml0KSB8PiANCiAgcmVuYW1lKCIgIiA9IDEpIHw+IA0KICBzdGF0Z2xfdGFibGUoKSB8PiANCiAgcGFja19yb3dzKGluZGV4ID0gdGFibGUoU09YQlMwMlsidW5pdCJdKSkgfD4gDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUKQ0KDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiU09YQlMwMiIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvMzk4OGViYTAtNjc4MC00MzZkLTgxZGEtYmU3M2Y4NzRiMjY3Iiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2Pg0KPC9kZXRhaWxzPg0KDQoNCjxkZXRhaWxzPiA8c3VtbWFyeT4gYHIgdHh0JFNPJHN1YjdbbGFuZ3VhZ2VdYCA8L3N1bW1hcnk+DQo8YnI+DQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCA3OiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlNPWE9VMDEiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBTT1hPVTAxfQ0KDQpTT0RPVTAxX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiU09YT1UwMSIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgImludmVudG9yeSB2YXJpYWJsZSIgPSBjKCJBbmRlbDUwIiwgIkFuZGVsNjAiKSwNCiAgICBnZW5kZXIgPSBweF9hbGwoKSwNCiAgICB5ZWFyID0gcHhfdG9wKDEpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCg0KU09ET1UwMSA8LSANCiAgU09ET1UwMV9yYXcgJT4lIA0KICBtdXRhdGUoYGludmVudG9yeSB2YXJpYWJsZWAgPSBgaW52ZW50b3J5IHZhcmlhYmxlYCAlPiUgZmN0X2lub3JkZXIoKSkgJT4lIA0KICBhcnJhbmdlKGRlc2MoZ2VuZGVyKSkgJT4lIA0KICBtdXRhdGUoZ2VuZGVyID0gZ2VuZGVyICU+JSBmY3RfaW5vcmRlcigpICU+JSBmY3RfcmV2KCkpICU+JSANCiAgc3ByZWFkKGdlbmRlciwgdmFsdWUpDQogIA0KDQpTT0RPVTAxICU+JSANCiAgc2VsZWN0KC15ZWFyKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcGFja19yb3dzKGluZGV4ID0gU09ET1UwMVtbInllYXIiXV0gJT4lIHRhYmxlKCkpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiU09YT1UwMSIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvYzdiYzlkNGItNGM5Ny00NjJkLWJiZDMtMjdjOTY4ZmM0MDU4Iiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCg0KPC9kZXRhaWxzPg0KDQoNCjxociBzdHlsZT0iYm9yZGVyOjFweCByaWRnZSBsaWdodGdyYXkiPiA8L2hyPg0KPGNlbnRlcj4gPHNwYW4gc3R5bGU9J2NvbG9yOiNEM0QzRDM7IGZvbnQtc2l6ZTo5MCU7Jz4gYHIgcGFzdGUodHh0JHVwZGF0ZVtsYW5ndWFnZV0sIGZvcm1hdChTeXMuRGF0ZSgpLCAiJWQuICVCICVZIikpYCA8L3NwYW4+IDwvY2VudGVyPg0KDQoNCg0KDQo8c2NyaXB0Pg0KdmFyIGFjYyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImFjY29yZGlvbiIpOw0KdmFyIGk7DQoNCmZvciAoaSA9IDA7IGkgPCBhY2MubGVuZ3RoOyBpKyspIHsNCiAgYWNjW2ldLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7DQogICAgdGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsNCiAgICB2YXIgcGFuZWwgPSB0aGlzLm5leHRFbGVtZW50U2libGluZzsNCiAgICBpZiAocGFuZWwuc3R5bGUubWF4SGVpZ2h0KSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOw0KICAgIH0gZWxzZSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBwYW5lbC5zY3JvbGxIZWlnaHQgKyAicHgiOw0KICAgIH0gDQogIH0pOw0KfQ0KPC9zY3JpcHQ+DQoNCg0K